import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.plaf.basic.*; public class MarktGUI implements ActionListener { private Markt markt; private Frame mainWindow; private Frame abschlussWindow; private List waren; private TextField verkaufCount; private Panel verkauf; private Panel r; private Panel lagerTab; public MarktGUI(Markt markt) { this.markt = markt; mainWindow = new JFrame("Markt"); abschlussWindow = new Frame("Verkauf Abschließen"); ((JFrame) mainWindow).setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE ); JTabbedPane tabs = new JTabbedPane(); this.lagerTab = new Panel( new GridLayout(1,1) ); this.lagerTab.add( lagerUI(markt.lager) ); // tabs.add("Lager", lagerUI( markt.lager ) ); tabs.add("Lager", lagerTab ); tabs.add("Verkauf", verkaufUI( markt.kasse ) ); mainWindow.add(tabs); mainWindow.pack(); } public void mainUI() { mainWindow.setVisible(true); } private Panel lagerUI(Warenlager lager) { Panel ui = new Panel( new GridLayout(0,4) ); String wname; int wcount; double wprice; Liste w; for ( w = lager.bestand; w != null; w = w.next ) { wcount = ( (Warenbestand) w.data ).count; wname = ( (Warenbestand) w.data ).ware.name; wprice = ( (Warenbestand) w.data ).ware.price; ui.add( new Label( String.format("%4d Stck.", wcount ), Label.RIGHT )); ui.add( new Label( wname, Label.LEFT )); ui.add( new Label( String.format( "%6.2f Euro", wprice), Label.RIGHT )); ui.add( new Label( String.format( "%6.2f Euro", (wcount * wprice)), Label.RIGHT )); } return ui; } private Panel verkaufUI( Kasse kasse ) { Panel ui = new Panel( new GridLayout(1, 3) ); Panel l = new Panel( new BorderLayout() ); Panel m = new Panel( new BorderLayout() ); this.r = new Panel( new BorderLayout() ); ui.add(l); ui.add(m); ui.add(r); // Widget-Element List this.waren = new List(10); l.add(waren, BorderLayout.NORTH); // this.waren.add("Schnabbeldiwauwau"); // this.waren.add("Foobar"); // Datenstruktur Liste Liste w; // = kasse.getLager().bestand; for ( w = kasse.getLager().bestand; w != null ; w = w.next ) { // waren.add() fügt einen Eintrag zum GUI-Widget "waren" hinzu waren.add( ( (Warenbestand) w.data ).ware.name ); // ^ ^ ^ ^ ^- Name (String) einer Ware // | | | |- Objekt "ware" aus Warenbestand // | | |- Datenobjekt aus der Liste // | |- Listenelement // |- Type-"Casting" w.data ist "Object" und soll als "Warenbestand" behandelt werden } l.add(new Label( kasse.toString() ), BorderLayout.SOUTH); Button bverkauf = new Button("Verkauf"); bverkauf.setActionCommand("verkauf"); bverkauf.addActionListener(this); this.verkaufCount = new TextField(5); m.add( new Label("Anzahl:"), BorderLayout.NORTH ); m.add( verkaufCount, BorderLayout.CENTER ); m.add( bverkauf, BorderLayout.SOUTH ); // r.add( verkaufTable(kasse.getVerkauf()) ); this.verkauf = lagerUI(kasse.getVerkauf()); r.add( this.verkauf, BorderLayout.NORTH ); r.add(new Button("Verkauf Abschließen"), BorderLayout.SOUTH); return ui; } /* private Panel verkaufTable(Verkauf v) { return new Panel(); }*/ private void verkaufAbschliessen( Verkauf v) { } public void actionPerformed(ActionEvent e) { switch (e.getActionCommand()) { case "verkauf": actionVerkauf(); break; case "abschluss": actionAbschluss(); break; case "abschlussOK": actionAbschlussOK(); break; } } private void actionVerkauf() { System.err.println("Verkauf"); System.err.println( waren.getSelectedIndex() + ": " + waren.getSelectedItem() ); System.err.println( "verkaufCount: " + verkaufCount.getText() ); // kasse.verkauf( ware, count ); // ^- ?? ^- ?? ^- ?? Kasse kasse = this.markt.kasse; Ware ware = this.markt.lager.get( // ^- "Warenbestand" an Lagerposition "n" this.waren.getSelectedIndex() // ^ ^- Zeilennummer der Auswahl // |- GUI-Widget List ).ware; // ^ Property "ware" von gewähltem Warenbestand int count = Integer.parseInt( this.verkaufCount.getText() // ^- GUI-Widget TextField ); kasse.verkauf( ware, count ); r.remove(verkauf); verkauf = lagerUI( this.markt.kasse.getVerkauf() ); System.err.println(this.markt.kasse.getVerkauf()); r.add(verkauf, 0); // r.add( lagerUI( this.markt.kasse.getVerkauf() ) ); // r.add( new Button("Test") ); r.validate(); lagerTab.removeAll(); lagerTab.add( lagerUI( markt.lager) ); lagerTab.validate(); mainWindow.pack(); } private void actionAbschluss() { System.err.println("Abschluss"); } private void actionAbschlussOK() { System.err.println("AbschlussOK"); } public static void main(String[] arg) { MarktGUI gui = new MarktGUI(new Markt()); gui.mainUI(); } }